https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93384

--- Comment #7 from Victor Stinner <vstinner at redhat dot com> ---
<mock-chroot> sh-5.0# as -a64 -mpower8 -many -mlittle -o test.o getbuildinfo.s
getbuildinfo.s: Assembler messages:
getbuildinfo.s:87427: Error: redefined symbol cannot be used on reloc
getbuildinfo.s:261948: Error: redefined symbol cannot be used on reloc

...
        addi 5,5,.LC715@toc@l
        li 4,0
        bl _PyObject_AssertFailed.localalias <===== LINE 87427
.LVL7500:
        .loc 31 2180 9 is_stmt 0 view .LVU23717
...

...
        addi 5,5,.LC715@toc@l
        li 4,0
        bl _PyObject_AssertFailed.localalias <===== LINE 261948
.LVL25059:
...

---

I found "_PyObject_AssertFailed.localalias" somewhere else:

...
.LFE6858:
        .size   _PyObject_AssertFailed,.-_PyObject_AssertFailed
        .set    _PyObject_AssertFailed.localalias,_PyObject_AssertFailed
        .set    _PyObject_AssertFailed.localalias,_PyObject_AssertFailed
        .align 2
        .globl PyInit_xxsubtype
        .type   PyInit_xxsubtype, @function
PyInit_xxsubtype:
...


---

In Python, _PyObject_AssertFailed() is declared in Include/cpython/object.h by:

PyAPI_FUNC(void) _PyObject_AssertFailed(
    PyObject *obj,
    const char *expr,
    const char *msg,
    const char *file,
    int line,
    const char *function);

Using gcc -E, I got:

# 446 "../Include/cpython/object.h"
__attribute__ ((visibility ("default"))) void _PyObject_AssertFailed(
    PyObject *obj,
    const char *expr,
    const char *msg,
    const char *file,
    int line,
    const char *function);

And it's implemented as:

void
_PyObject_AssertFailed(PyObject *obj, const char *expr, const char *msg,
                       const char *file, int line, const char *function)
{
   ...
}

Reply via email to