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

            Bug ID: 88643
           Summary: -Wl,--wrap not supported with LTO
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: lto
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: hubicka at gcc dot gnu.org, marxin at gcc dot gnu.org
  Target Milestone: ---

Seen in cmocka package:

$ cat foo.h
int cook(void);

$ cat foo.c
#include "foo.h"

int __wrap_cook(void)
{
  return 0;
}

$ cat bar.c
int cook(void)
{
  return -1;
}

$ cat main.c
#include "foo.h"

int main()
{
  if (cook () == -1)
    __builtin_abort ();

  return 0;
}

$ gcc main.c foo.c bar.c -Wl,--wrap=cook && ./a.out
(ok)

$ gcc main.c foo.c bar.c -Wl,--wrap=cook -flto && ./a.out 
Aborted (core dumped)

$ cat main.res
3
main.o 2
198 afba4c81ec45b173 PREVAILING_DEF main
215 afba4c81ec45b173 RESOLVED_IR cook
foo.o 1
197 34da4dbae42a1068 PREVAILING_DEF_IRONLY __wrap_cook
bar.o 1
197 d2fb0e1d62586272 PREVAILING_DEF_IRONLY cook

I'm not sure there's an API for linker plugin to resolve a symbol with a
deferent one. Honza?

Reply via email to