[llvm-dev] lld/mach-o x86_64 asserts

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

[llvm-dev] lld/mach-o x86_64 asserts

Bruce Hoult via llvm-dev
On LLD mach/o x86_64 LLD calls dataInCodeTransitionStart and dataInCodeTransitionEnd, which aren't implemented (and thus return the defautl value 0), later in applyFixupFinal it reaches the default: unreachable causing miscompiles depending on the optimizer.

Attached is a simple patch that fixes this.

It also fixes the read8 method, as object files inside .a files aren't 8 byte aligned when memory mapped.

_______________________________________________
LLVM Developers mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

ldd_relocation_fixes.txt (2K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] lld/mach-o x86_64 asserts

Bruce Hoult via llvm-dev
I confirm that this passes the Zig test suite. This solves the 1 outstanding patch that Zig has against LLD, and if this is merged, we can go back to using LLD releases instead of a fork.

On Tue, Jul 10, 2018 at 3:40 AM, Carlo Kok via llvm-dev <[hidden email]> wrote:
On LLD mach/o x86_64 LLD calls dataInCodeTransitionStart and dataInCodeTransitionEnd, which aren't implemented (and thus return the defautl value 0), later in applyFixupFinal it reaches the default: unreachable causing miscompiles depending on the optimizer.

Attached is a simple patch that fixes this.

It also fixes the read8 method, as object files inside .a files aren't 8 byte aligned when memory mapped.

_______________________________________________
LLVM Developers mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev



_______________________________________________
LLVM Developers mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] lld/mach-o x86_64 asserts

Bruce Hoult via llvm-dev
Carlo,

Thank you for your contribution! We don't usually commit any feature without a test, so can you write a test for us? Then I think I can commit this for you.

On Tue, Jul 10, 2018 at 12:33 PM Andrew Kelley via llvm-dev <[hidden email]> wrote:
I confirm that this passes the Zig test suite. This solves the 1 outstanding patch that Zig has against LLD, and if this is merged, we can go back to using LLD releases instead of a fork.

On Tue, Jul 10, 2018 at 3:40 AM, Carlo Kok via llvm-dev <[hidden email]> wrote:
On LLD mach/o x86_64 LLD calls dataInCodeTransitionStart and dataInCodeTransitionEnd, which aren't implemented (and thus return the defautl value 0), later in applyFixupFinal it reaches the default: unreachable causing miscompiles depending on the optimizer.

Attached is a simple patch that fixes this.

It also fixes the read8 method, as object files inside .a files aren't 8 byte aligned when memory mapped.

_______________________________________________
LLVM Developers mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


_______________________________________________
LLVM Developers mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

_______________________________________________
LLVM Developers mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] lld/mach-o x86_64 asserts

Bruce Hoult via llvm-dev
That sounds quite reasaonable; how does one usually go about doing that? a repro zip that hits both asserts?


On Wed, Jul 11, 2018, at 03:11, Rui Ueyama wrote:
Carlo,

Thank you for your contribution! We don't usually commit any feature without a test, so can you write a test for us? Then I think I can commit this for you.

On Tue, Jul 10, 2018 at 12:33 PM Andrew Kelley via llvm-dev <[hidden email]> wrote:
I confirm that this passes the Zig test suite. This solves the 1 outstanding patch that Zig has against LLD, and if this is merged, we can go back to using LLD releases instead of a fork.

On Tue, Jul 10, 2018 at 3:40 AM, Carlo Kok via llvm-dev <[hidden email]> wrote:
On LLD mach/o x86_64 LLD calls dataInCodeTransitionStart and dataInCodeTransitionEnd, which aren't implemented (and thus return the defautl value 0), later in applyFixupFinal it reaches the default: unreachable causing miscompiles depending on the optimizer.

Attached is a simple patch that fixes this.

It also fixes the read8 method, as object files inside .a files aren't 8 byte aligned when memory mapped.

_______________________________________________
LLVM Developers mailing list


_______________________________________________
LLVM Developers mailing list


_______________________________________________
LLVM Developers mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] lld/mach-o x86_64 asserts

Bruce Hoult via llvm-dev
On Tue, Jul 10, 2018 at 10:12 PM Carlo Kok via llvm-dev
<[hidden email]> wrote:
>
> That sounds quite reasaonable; how does one usually go about doing that? a repro zip that hits both asserts?
>

You can take inspiration from anything in lld/test, but basically
either an assembly source (or multiple) passed through llvm-mc and
then lld, or a YAML file passed to yaml2obj (and then lld). From what
I see the Mach-O backend prefers YAML-style testing, but I don't think
that's a strict requirement.

Thanks,

--
Davide
_______________________________________________
LLVM Developers mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] lld/mach-o x86_64 asserts

Bruce Hoult via llvm-dev
On Wed, Jul 11, 2018, at 16:45, Davide Italiano wrote:

> On Tue, Jul 10, 2018 at 10:12 PM Carlo Kok via llvm-dev
> <[hidden email]> wrote:
> >
> > That sounds quite reasaonable; how does one usually go about doing that? a repro zip that hits both asserts?
> >
>
> You can take inspiration from anything in lld/test, but basically
> either an assembly source (or multiple) passed through llvm-mc and
> then lld, or a YAML file passed to yaml2obj (and then lld). From what
> I see the Mach-O backend prefers YAML-style testing, but I don't think
> that's a strict requirement.
Doesn't look like the test system works on windows?


C:\p\llvm\llvm\tools\lld\test>python c:\p\llvm\llvm-bin32\relwithdebinfo\bin\llvm-lit.py darwin\darwin-asserts-in-x86_64.ll
llvm-lit.py: C:/p/llvm/llvm\utils\lit\lit\TestingConfig.py:101: fatal: unable to parse config file 'C:\\p\\llvm\\llvm\\tools\\lld\\test\\lit.cfg.py', traceback: Traceback (most recent call last):
  File "C:/p/llvm/llvm\utils\lit\lit\TestingConfig.py", line 88, in load_from_path
    exec(compile(data, path, 'exec'), cfg_globals, None)
  File "C:\p\llvm\llvm\tools\lld\test\lit.cfg.py", line 23, in <module>
    config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell)
AttributeError: 'NoneType' object has no attribute 'use_lit_shell'


_______________________________________________
LLVM Developers mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

darwin-asserts-in-x86_64.ll (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [llvm-dev] lld/mach-o x86_64 asserts

Bruce Hoult via llvm-dev
Got it.

Attached are both the testcase & the fix.

On Tue, Jul 17, 2018, at 12:06, Carlo Kok via llvm-dev wrote:

> On Wed, Jul 11, 2018, at 16:45, Davide Italiano wrote:
> > On Tue, Jul 10, 2018 at 10:12 PM Carlo Kok via llvm-dev
> > <[hidden email]> wrote:
> > >
> > > That sounds quite reasaonable; how does one usually go about doing that? a repro zip that hits both asserts?
> > >
> >
> > You can take inspiration from anything in lld/test, but basically
> > either an assembly source (or multiple) passed through llvm-mc and
> > then lld, or a YAML file passed to yaml2obj (and then lld). From what
> > I see the Mach-O backend prefers YAML-style testing, but I don't think
> > that's a strict requirement.
>
> Doesn't look like the test system works on windows?
>
>
> C:\p\llvm\llvm\tools\lld\test>python c:\p\llvm\llvm-bin32\relwithdebinfo
> \bin\llvm-lit.py darwin\darwin-asserts-in-x86_64.ll
> llvm-lit.py: C:/p/llvm/llvm\utils\lit\lit\TestingConfig.py:101: fatal:
> unable to parse config file 'C:\\p\\llvm\\llvm\\tools\\lld\\test\
> \lit.cfg.py', traceback: Traceback (most recent call last):
>   File "C:/p/llvm/llvm\utils\lit\lit\TestingConfig.py", line 88, in
> load_from_path
>     exec(compile(data, path, 'exec'), cfg_globals, None)
>   File "C:\p\llvm\llvm\tools\lld\test\lit.cfg.py", line 23, in <module>
>     config.test_format = lit.formats.ShTest(not
> llvm_config.use_lit_shell)
> AttributeError: 'NoneType' object has no attribute 'use_lit_shell'
>
> _______________________________________________
> LLVM Developers mailing list
> [hidden email]
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> Email had 1 attachment:
> + darwin-asserts-in-x86_64.ll
>   5k (application/octet-stream)

_______________________________________________
LLVM Developers mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

darwin-asserts-in-x86_64.ll (2K) Download Attachment
ldd_relocation_fixes.txt (2K) Download Attachment