binutils 2.14a i370 gas literal issue

Paul Edwards mutazilah@gmail.com
Thu Aug 22 02:48:15 GMT 2024


> > paul.o:     file format elf32-i370
> >
> > Contents of section .text:
> >   0000 d207d05c 7010d207 d0647012 00000000  ...\p....dp.....
> >   0010 c2c2c2c2 c2c2c2c2 c2c2c2c2 c2c2c2c2  ................
> > Contents of section .data:
>
> Thanks for that result too - the c1 have disappeared - some
> sort of random strike.

After many hours of debugging (noting that I didn't write this
code and I have no idea what I'm doing), I came to the
tentative conclusion that this line of code:

literals[next_literal_pool_place].exp = *exx;

is a simple assignment in a situation where something like
strdup() is required.

and so the expression exp is on shaky ground. Liable to
suddenly be totally revamped which is why the C1 get
replaced by C2.

However, I have another theory that that simple assignment
is supposed to work, and instead it is exx that is supposed to
get a fresh set of strduped-like variables to be altered.

And I had a theory that the function expression() was designed
to create that fresh set of variables, and that I was missing that,
and that maybe this would fix the issue:

D:\devel\binutils\gas\config>cvs diff -c
cvs diff: Diffing .
Index: tc-i370.c
===================================================================
RCS file: \cvsroot/binutils/gas/config/tc-i370.c,v
retrieving revision 1.5
diff -c -r1.5 tc-i370.c
*** tc-i370.c   20 Aug 2024 22:38:55 -0000      1.5
--- tc-i370.c   22 Aug 2024 02:27:31 -0000
***************
*** 2108,2113 ****
--- 2108,2114 ----
        char *hold;
        expressionS ex;

+       expression (&ex);
        operand = &i370_operands[*opindex_ptr];
        errmsg = NULL;


D:\devel\binutils\gas\config>


But alas, that didn't fix the issue and I'm still getting the C2
where I expect to see C1.

Is anyone able to provide some guidance on this?

So far I haven't found the function expression() to confirm what
it does.

Thanks. Paul.


More information about the Binutils mailing list