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--