Moshtaghi, Alireza via llvm-dev
2020-Nov-16 17:52 UTC
[llvm-dev] lld error: output file too large <some large number>
I can't send the exact objects, but I'll try to reproduce.
Thanks
A
On 11/16/20, 9:48 AM, "Fāng-ruì Sòng" <maskray at google.com>
wrote:
NetApp Security WARNING: This is an external email. Do not click links or
open attachments unless you recognize the sender and know the content is safe.
On Mon, Nov 16, 2020 at 9:05 AM Moshtaghi, Alireza
<Alireza.Moshtaghi at netapp.com> wrote:
>
> My target requires that text section be at 0x0 so "-Ttext
0x0" is passed to the linker.
> When I link with gold, it goes through; but lld fails.
> Instead of always returning the same calculation, when I change the
calculation to the following, it links:
> return first->offset + (os->addr > first->addr ?
> os->addr - first->addr :
> os->addr);
>
> There are other things in the build that I need to fix so I can't
tell if the result is correct yet though. Do you think this is correct?
It is wrong. Can you upload a reproduce file somewhere?
(LLD_REPRODUCE=/tmp/rep.tar ld.lld .... or ld.lld
--reproduce=/tmp/rep.tar)
> Thanks
> A
>
> On 11/15/20, 11:19 PM, "Fāng-ruì Sòng" <maskray at
google.com> wrote:
>
> NetApp Security WARNING: This is an external email. Do not click
links or open attachments unless you recognize the sender and know the content
is safe.
>
>
>
>
> Hi Alireza, getFileAlignment was renamed in Oct 2018. It seems that
> you may have sectionA and sectionB in one PT_LOAD while sectionB
has a
> lower address. This is invalid.
>
> Can you provide more information about how you have a sectionB with
a
> lower address? Note that LLD has an error "unable to move
location
> counter backward for: ".
>
> On Sun, Nov 15, 2020 at 12:20 AM Moshtaghi, Alireza via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
> >
> > Hi
> >
> > I’m having a trouble linking a special program with lld and
the above error is generated.
> >
> > I narrowed it down to lld/Writer.cpp:getFileAlignment ().
> >
> > (Well, my local repository is from a while back (version 10)
and for me it is lld/Writer.cpp:computeFileOffset ())
> >
> > Either way, where it is calculating the file offset when two
sections share same PT_LOAD, the formula used is off2 = off1 + (VA2 – VA1) but
the subtraction is causing a negative number, causing out of bound value…
> >
> >
> >
> > Should this be abs(VA2 – VA1) ?
> >
> > Or
> >
> > Should it be cast to a signed integer so we subtract the
difference rather than adding the large value?
> >
> >
> >
> > Thanks
> >
> > A.
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > llvm-dev at lists.llvm.org
> > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
>
> --
> 宋方睿
>
--
宋方睿
Moshtaghi, Alireza via llvm-dev
2020-Nov-16 18:31 UTC
[llvm-dev] lld error: output file too large <some large number>
Actually it is the combination of -Ttext 0x0 and --no-rosegment that cause the
problem. You can reproduce using any c file using following:
clang test.c -fuse-ld=lld -Wl,-Ttext,0x0 -Wl,--no-rosegment
A
On 11/16/20, 9:52 AM, "llvm-dev on behalf of Moshtaghi, Alireza via
llvm-dev" <llvm-dev-bounces at lists.llvm.org on behalf of llvm-dev at
lists.llvm.org> wrote:
NetApp Security WARNING: This is an external email. Do not click links or
open attachments unless you recognize the sender and know the content is safe.
I can't send the exact objects, but I'll try to reproduce.
Thanks
A
On 11/16/20, 9:48 AM, "Fāng-ruì Sòng" <maskray at
google.com> wrote:
NetApp Security WARNING: This is an external email. Do not click links
or open attachments unless you recognize the sender and know the content is
safe.
On Mon, Nov 16, 2020 at 9:05 AM Moshtaghi, Alireza
<Alireza.Moshtaghi at netapp.com> wrote:
>
> My target requires that text section be at 0x0 so "-Ttext
0x0" is passed to the linker.
> When I link with gold, it goes through; but lld fails.
> Instead of always returning the same calculation, when I change the
calculation to the following, it links:
> return first->offset + (os->addr > first->addr ?
> os->addr - first->addr :
> os->addr);
>
> There are other things in the build that I need to fix so I
can't tell if the result is correct yet though. Do you think this is
correct?
It is wrong. Can you upload a reproduce file somewhere?
(LLD_REPRODUCE=/tmp/rep.tar ld.lld .... or ld.lld
--reproduce=/tmp/rep.tar)
> Thanks
> A
>
> On 11/15/20, 11:19 PM, "Fāng-ruì Sòng" <maskray at
google.com> wrote:
>
> NetApp Security WARNING: This is an external email. Do not
click links or open attachments unless you recognize the sender and know the
content is safe.
>
>
>
>
> Hi Alireza, getFileAlignment was renamed in Oct 2018. It seems
that
> you may have sectionA and sectionB in one PT_LOAD while
sectionB has a
> lower address. This is invalid.
>
> Can you provide more information about how you have a sectionB
with a
> lower address? Note that LLD has an error "unable to move
location
> counter backward for: ".
>
> On Sun, Nov 15, 2020 at 12:20 AM Moshtaghi, Alireza via
llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
> >
> > Hi
> >
> > I’m having a trouble linking a special program with lld
and the above error is generated.
> >
> > I narrowed it down to lld/Writer.cpp:getFileAlignment ().
> >
> > (Well, my local repository is from a while back (version
10) and for me it is lld/Writer.cpp:computeFileOffset ())
> >
> > Either way, where it is calculating the file offset when
two sections share same PT_LOAD, the formula used is off2 = off1 + (VA2 – VA1)
but the subtraction is causing a negative number, causing out of bound value…
> >
> >
> >
> > Should this be abs(VA2 – VA1) ?
> >
> > Or
> >
> > Should it be cast to a signed integer so we subtract the
difference rather than adding the large value?
> >
> >
> >
> > Thanks
> >
> > A.
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > llvm-dev at lists.llvm.org
> > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
>
> --
> 宋方睿
>
--
宋方睿
_______________________________________________
LLVM Developers mailing list
llvm-dev at lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Fāng-ruì Sòng via llvm-dev
2020-Nov-16 18:38 UTC
[llvm-dev] lld error: output file too large <some large number>
This is a common pitfall: people think that .text is the first section of the traditional concept "text segment" (which does not apply with LLD layout and GNU ld's -z separate-code layout) You need to use --image-base=0 https://releases.llvm.org/10.0.0/tools/lld/docs/ReleaseNotes.html#breaking-changes On Mon, Nov 16, 2020 at 10:31 AM Moshtaghi, Alireza <Alireza.Moshtaghi at netapp.com> wrote:> > Actually it is the combination of -Ttext 0x0 and --no-rosegment that cause the problem. You can reproduce using any c file using following: > clang test.c -fuse-ld=lld -Wl,-Ttext,0x0 -Wl,--no-rosegment > > A > > On 11/16/20, 9:52 AM, "llvm-dev on behalf of Moshtaghi, Alireza via llvm-dev" <llvm-dev-bounces at lists.llvm.org on behalf of llvm-dev at lists.llvm.org> wrote: > > NetApp Security WARNING: This is an external email. Do not click links or open attachments unless you recognize the sender and know the content is safe. > > > > > I can't send the exact objects, but I'll try to reproduce. > > Thanks > A > > On 11/16/20, 9:48 AM, "Fāng-ruì Sòng" <maskray at google.com> wrote: > > NetApp Security WARNING: This is an external email. Do not click links or open attachments unless you recognize the sender and know the content is safe. > > > > > On Mon, Nov 16, 2020 at 9:05 AM Moshtaghi, Alireza > <Alireza.Moshtaghi at netapp.com> wrote: > > > > My target requires that text section be at 0x0 so "-Ttext 0x0" is passed to the linker. > > When I link with gold, it goes through; but lld fails. > > Instead of always returning the same calculation, when I change the calculation to the following, it links: > > return first->offset + (os->addr > first->addr ? > > os->addr - first->addr : > > os->addr); > > > > There are other things in the build that I need to fix so I can't tell if the result is correct yet though. Do you think this is correct? > > It is wrong. Can you upload a reproduce file somewhere? > (LLD_REPRODUCE=/tmp/rep.tar ld.lld .... or ld.lld > --reproduce=/tmp/rep.tar) > > > Thanks > > A > > > > On 11/15/20, 11:19 PM, "Fāng-ruì Sòng" <maskray at google.com> wrote: > > > > NetApp Security WARNING: This is an external email. Do not click links or open attachments unless you recognize the sender and know the content is safe. > > > > > > > > > > Hi Alireza, getFileAlignment was renamed in Oct 2018. It seems that > > you may have sectionA and sectionB in one PT_LOAD while sectionB has a > > lower address. This is invalid. > > > > Can you provide more information about how you have a sectionB with a > > lower address? Note that LLD has an error "unable to move location > > counter backward for: ". > > > > On Sun, Nov 15, 2020 at 12:20 AM Moshtaghi, Alireza via llvm-dev > > <llvm-dev at lists.llvm.org> wrote: > > > > > > Hi > > > > > > I’m having a trouble linking a special program with lld and the above error is generated. > > > > > > I narrowed it down to lld/Writer.cpp:getFileAlignment (). > > > > > > (Well, my local repository is from a while back (version 10) and for me it is lld/Writer.cpp:computeFileOffset ()) > > > > > > Either way, where it is calculating the file offset when two sections share same PT_LOAD, the formula used is off2 = off1 + (VA2 – VA1) but the subtraction is causing a negative number, causing out of bound value… > > > > > > > > > > > > Should this be abs(VA2 – VA1) ? > > > > > > Or > > > > > > Should it be cast to a signed integer so we subtract the difference rather than adding the large value? > > > > > > > > > > > > Thanks > > > > > > A. > > > > > > _______________________________________________ > > > LLVM Developers mailing list > > > llvm-dev at lists.llvm.org > > > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > > > > > > > > -- > > 宋方睿 > > > > > -- > 宋方睿 > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-- 宋方睿
Seemingly Similar Threads
- lld error: output file too large <some large number>
- lld error: output file too large <some large number>
- lld error: output file too large <some large number>
- lld error: output file too large <some large number>
- lld error: output file too large <some large number>