ld prints "mangled" error message
Gyorgy Matyasfalvi <[email protected]> Mon, 28 Mar 2022 18:46:03 -0400
| Newsgroups | gmane.comp.gnu.utils.bugs |
|---|---|
| Message-ID | <CALE2uccRz6AX9j-UZZGDAX_sJ5Jrq17KVWw=qLS-NV-APipwKg@mail.gmail.com> |
--0000000000005edd8005db4f1480
Content-Type: text/plain; charset="UTF-8"
Hello,
It looks to me that undefined references to functions taking const pointers
are reported with a mangled function signature.
Example:
Take the following example, where `main.cpp` contains:
```
void pc(const char * s);
int main() {
const char *msg = "Hello World!";
pc(msg);
return 0;
}
```
If you compile it into an object file with
```
g++ -c main.cpp
```
and then run
```
ld main.o
```
you get
```
ld: warning: cannot find entry symbol _start; defaulting to
0000000000401000
ld: main.o: in function `main':
main.cpp:(.text+0x1f): undefined reference to `pc(char const*)'
```
I think `pc(char const*)' should be `pc(const char*)'.
Details:
1. My ld version is:
- GNU ld (GNU Binutils for Ubuntu) 2.34
2. No patches applied to the ld source
3. Output of uname -a:
- Linux 5.16.11-76051611-generic
#202202230823~1646248261~20.04~2b22243-Ubuntu SMP PREEMPT Thu Ma x86_64
x86_64 x86_64 GNU/Linux
4. I tried compiling with the following compilers and got the same result:
- g++-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
- g++-8 (Ubuntu 8.4.0-3ubuntu2) 8.4.0
- g++-9 (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0
4. No command arguments given to the linker
5. Attached
6. As mentioned above in the undefined reference error message I expect
`pc(const char*)' as opposed to `pc(char const*)'.
Let me know if you need anything else.
Thanks! Best wishes,
Gyorgy
--0000000000005edd8005db4f1480
Content-Type: text/x-c-code; charset="US-ASCII"; name="main.cpp"
Content-Disposition: attachment; filename="main.cpp"
Content-Transfer-Encoding: base64
Content-ID: <f_l1bak0qb0>
X-Attachment-Id: f_l1bak0qb0
CnZvaWQgcGMoY29uc3QgY2hhciAqIHMpOwoKaW50IG1haW4oKSB7CiAgICBjb25zdCBjaGFyICpt
c2cgPSAiSGVsbG8gV29ybGQhIjsKICAgIHBjKG1zZyk7CiAgICByZXR1cm4gMDsKfQoK
--0000000000005edd8005db4f1480
Content-Type: application/octet-stream; name="main.o"
Content-Disposition: attachment; filename="main.o"
Content-Transfer-Encoding: base64
Content-ID: <f_l1bak0r01>
X-Attachment-Id: f_l1bak0r01
f0VMRgIBAQAAAAAAAAAAAAEAPgABAAAAAAAAAAAAAAAAAAAAAAAAACgDAAAAAAAAAAAAAEAAAAAA
AEAADgANAPMPHvpVSInlSIPsEEiNBQAAAABIiUX4SItF+EiJx+gAAAAAuAAAAADJw0hlbGxvIFdv
cmxkIQAAR0NDOiAoVWJ1bnR1IDkuNC4wLTF1YnVudHUxfjIwLjA0KSA5LjQuMAAAAAAAAAAABAAA
ABAAAAAFAAAAR05VAAIAAMAEAAAAAwAAAAAAAAAUAAAAAAAAAAF6UgABeBABGwwHCJABAAAcAAAA
HAAAAAAAAAAqAAAAAEUOEIYCQw0GYQwHCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAE
APH/AAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAAAAAAAA
AAAAAAAAAAAAAAAAAAADAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAUAAAAAAAAAAAAAAAAAAAAA
AAAAAAADAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAkA
AAAAAAAAAAAAAAAAAAAAAAAAAAADAAYAAAAAAAAAAAAAAAAAAAAAAAoAAAASAAEAAAAAAAAAAAAq
AAAAAAAAAA8AAAAQAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAABt
YWluLmNwcABtYWluAF9HTE9CQUxfT0ZGU0VUX1RBQkxFXwBfWjJwY1BLYwAAAA8AAAAAAAAAAgAA
AAUAAAD8/////////x8AAAAAAAAABAAAAAwAAAD8/////////yAAAAAAAAAAAgAAAAIAAAAAAAAA
AAAAAAAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5yZWxhLnRleHQALmRhdGEALmJzcwAucm9k
YXRhAC5jb21tZW50AC5ub3RlLkdOVS1zdGFjawAubm90ZS5nbnUucHJvcGVydHkALnJlbGEuZWhf
ZnJhbWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAgAAAAAQAAAAYAAAAAAAAAAAAAAAAAAABAAAAAAAAAACoAAAAAAAAA
AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAGwAAAAQAAABAAAAAAAAAAAAAAAAAAAAAaAIAAAAAAAAw
AAAAAAAAAAsAAAABAAAACAAAAAAAAAAYAAAAAAAAACYAAAABAAAAAwAAAAAAAAAAAAAAAAAAAGoA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAMAAAAAAAAAAAAA
AAAAAABqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAMQAAAAEAAAACAAAA
AAAAAAAAAAAAAAAAagAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAADkAAAAB
AAAAMAAAAAAAAAAAAAAAAAAAAHcAAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAA
AABCAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA
AAAAAAAAAAAAUgAAAAcAAAACAAAAAAAAAAAAAAAAAAAAqAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAA
CAAAAAAAAAAAAAAAAAAAAGoAAAABAAAAAgAAAAAAAAAAAAAAAAAAAMgAAAAAAAAAOAAAAAAAAAAA
AAAAAAAAAAgAAAAAAAAAAAAAAAAAAABlAAAABAAAAEAAAAAAAAAAAAAAAAAAAACYAgAAAAAAABgA
AAAAAAAACwAAAAkAAAAIAAAAAAAAABgAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
AAAAAAA4AQAAAAAAAAwAAAAKAAAACAAAAAAAAAAYAAAAAAAAAAkAAAADAAAAAAAAAAAAAAAAAAAA
AAAAADgCAAAAAAAALgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAwAAAAAAAAAA
AAAAAAAAAAAAAACwAgAAAAAAAHQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA
--0000000000005edd8005db4f1480--