[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread mliska at suse dot cz
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #3 from Martin Liska --- Feel free to create a GCC bug for it, thanks. -- You are receiving this mail because: You are on the CC list for the bug.

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread krebbel at linux dot ibm.com
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 Andreas Krebbel changed: What|Removed |Added CC||krebbel at linux dot ibm.com --- Co

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread rui314 at gmail dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #5 from Rui Ueyama --- Ooh, that's why I did see this only on SuSE's builder. I'm glad that that's already been handled. mold does not create PLT for R_390_PC32DBL; it does only for R_390_PLT* relocs. We can change that so that mo

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread krebbel at linux dot ibm.com
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #6 from Andreas Krebbel --- (In reply to Rui Ueyama from comment #5) > Ooh, that's why I did see this only on SuSE's builder. I'm glad that that's > already been handled. I would just like to mention that adding the @PLT isn't rea

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread rui314 at gmail dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #7 from Rui Ueyama --- It's about pointer equality. C/C++ guarantees that two function pointers are equal if and only if they are for the same function. For example, an expression `&printf` in your main program code should yields t

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread uweigand at gcc dot gnu.org
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #8 from Ulrich Weigand --- (In reply to Rui Ueyama from comment #7) > A main executable's PLT entry that is used as a function address is often > called a "canonical PLT". > > If the main executable isn't compiled as PIC, and if i

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread rui314 at gmail dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #9 from Rui Ueyama --- > My understanding is that the canonical function address of `foo` is the > address of the PLT for `foo` in the main executable, *if such a PLT > exists*, and the address of `foo` otherwise. That PLT exists

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread uweigand at gcc dot gnu.org
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #10 from Ulrich Weigand --- (In reply to Rui Ueyama from comment #9) > However, the PLT address is not used as its function address as you can see > below. > > $ ./test1 > foo=0x7f60482d3110 bar=0x7f60482d3120 Well, when I r

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread rui314 at gmail dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #11 from Rui Ueyama --- > Well, when I run your example (exact same commands on s390x), I get: > > ./test1 > foo=0x3ff89800620 bar=0x10004d8 > > (That's the default toolchain on Ubuntu 20.04) Yes, that's the compatibility issue

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread krebbel at linux dot ibm.com
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #12 from Andreas Krebbel --- So do I understand it correctly that for the Qt case the example would look more like this: test2.c: #include void alias () __attribute__ ((weak, alias ("bar"))); void bar() { printf("bar=%p alias=%

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread uweigand at gcc dot gnu.org
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #13 from Ulrich Weigand --- In any case, I still don't quite get where there is any incompatibility. If `bar` resolves to its canonical PLT address, and you use `--defsym=foo=bar`, then `foo` will *also* resolve to the canonical P

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread uweigand at gcc dot gnu.org
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #15 from Ulrich Weigand --- Thanks for the test case! A few comments: 1. In this scenario, it is indeed not guaranteed that fn1 compares equal to fn1_public everywhere. This is because fn1 is declared hidden in libfoo.c, so all

[Bug gas/29655] s390x gas generates PC32DBL instead of PLT32DBL for function call

2022-10-07 Thread rui314 at gmail dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29655 --- Comment #14 from Rui Ueyama --- The following bash script should demonstrate the issue better: - cat < libfoo.h #ifndef __PIC__ #error "this file must be compiled with -fPIC" #endif typedef void Fn(); void fn1_public(void); void call

[Bug binutils/29660] New: Duplicated symbols count twice for linker script sections?

2022-10-07 Thread jsmith at crackofdawn dot onmicrosoft.com
https://sourceware.org/bugzilla/show_bug.cgi?id=29660 Bug ID: 29660 Summary: Duplicated symbols count twice for linker script sections? Product: binutils Version: 2.33 Status: UNCONFIRMED Severity: normal

[Bug binutils/29660] Duplicated symbols count twice for linker script sections?

2022-10-07 Thread amodra at gmail dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29660 Alan Modra changed: What|Removed |Added Resolution|--- |INVALID Status|UNCONFIRMED