Bug 1523401 - bad code generated on s390x
Summary: bad code generated on s390x
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: annobin
Version: 27
Hardware: s390x
OS: Linux
unspecified
unspecified
Target Milestone: ---
Assignee: Nick Clifton
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: ZedoraTracker 1502660
TreeView+ depends on / blocked
 
Reported: 2017-12-07 21:36 UTC by Dan Horák
Modified: 2018-02-20 14:43 UTC (History)
3 users (show)

Fixed In Version: annobin-2.5.1-4.fc28
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-02-20 14:43:03 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Dan Horák 2017-12-07 21:36:31 UTC
Description of problem:
We see build failure in the s390utils packages.

Version-Release number of selected component (if applicable):
annobin-2.5.1-3.fc28.s390x

How reproducible:
100%

Steps to Reproduce:
1. printf "#include <%s>\n int main(void) {return 0;}"  "fuse.h" | ( gcc -DS390_TOOLS_RELEASE=2.2.0-1.fc28 -DS390_TOOLS_LIBDIR=/lib/s390-tools -DS390_TOOLS_DATADIR=/usr/share/s390-tools -DS390_TOOLS_SYSCONFDIR=/etc -DS390_TOOLS_BINDIR=/usr/sbin -g -rdynamic -fstack-protector-all -W -Wall -Wformat-security -O3 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=zEC12 -mtune=z13 -DHAVE_FUSE=1 -I/usr/include/fuse -D_FILE_OFFSET_BITS=64 -I ../include -D_GNU_SOURCE -xc - )



Actual results:
{standard input}: Assembler messages:
{standard input}:4: Error: unrecognized symbol type ""
{standard input}:5: Error: junk at end of line, first unrecognized character is `:'


Expected results:
no error


Additional info:
The reproducer is expanded from https://github.com/ibm-s390-tools/s390-tools/blob/master/zdump/Makefile#L12

Removing -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 makes the gcc command succeed.

The generated assembler code looks like

	.file	""
	.machinemode zarch
	.machine "zEC12"
.type  STT_OBJECT
:
	.pushsection .gnu.build.attributes, "", %note
	.balign 4
	.pushsection .gnu.build.attributes
	.dc.l 8 	# namesz = strlen (GA$2p2)
	.dc.l 8		# descsz = sizeof (address)
	.dc.l 0x100	# type = OPEN
	.asciz "GA$2p2"	# name (string: version)
	.quad 	# description (symbol name)
	.popsection

	.pushsection .gnu.build.attributes
	.dc.l 23 	# namesz = strlen (GA$gcc 7.2.1 20170915)
	.dc.l 0		# no description
	.dc.l 0x100	# type = OPEN
	.asciz "GA$gcc 7.2.1 20170915"	# name (string: build-tool)
	.dc.b 0 	# Padding
	.popsection
...

Comment 1 Nick Clifton 2017-12-08 11:31:13 UTC
Hi Dan,

  The problem was the piped input.  The annobin plugin was not expecting this
  and so it generated an assembler symbol name that was completely empty.  I
  have checked in a patch to check for this situation so the problem should
  now be resolved.  Please could you try out: annobin-2.5.1-4.fc28 and let
  me know if the problem still exists.

Cheers
  Nick

Comment 2 Dan Horák 2017-12-08 19:34:29 UTC
Hi Nick, yup, the updated annobin fixes the problem. Thanks.


Note You need to log in before you can comment on or make changes to this bug.