From: "HON LUU" <hon@dreambigsemi.com>
To: Segher Boessenkool <segher@kernel.crashing.org>
Cc: "gcc-help@gcc.gnu.org" <gcc-help@gcc.gnu.org>
Subject: RE: gcc question
Date: Sat, 11 Sep 2021 21:08:06 +0000 [thread overview]
Message-ID: <DB6PR02MB3111AB3D949B72434D4E414EDDD79@DB6PR02MB3111.eurprd02.prod.outlook.com> (raw)
In-Reply-To: <20210910183609.GA1583@gate.crashing.org>
Hi Segher,
Following is more information that I can collect. Please let me know if you need anything else.
Thank you very much for your help.
Regards,
Hon
=====================================================================
+ this is part of the content of cdev.c, from which the error happened
...
...
struct static_key_false test;
int qdma_cdev_init(void) {
if (static_branch_unlikely(&test)) {
printk("test...\n");
}
return 0;
}
void qdma_cdev_cleanup(void) {
}
...
+ static_branch_unlikely is defined as followed from /lib/modules/`uname -r`/build/include/linux/jump_label.h :
#define static_branch_unlikely(x) \
({ \
bool branch; \
if (__builtin_types_compatible_p(typeof(*x), struct static_key_true)) \
branch = arch_static_branch_jump(&(x)->key, false); \
else if (__builtin_types_compatible_p(typeof(*x), struct static_key_false)) \
branch = arch_static_branch(&(x)->key, false); \
else \
branch = ____wrong_branch_error(); \
unlikely(branch); \
})
+ the error is related to arch_static_branch_jump() which is defined from /lib/modules/`uname -r`/build/arch/x86/include/asm/jump_label.h as followed:
static __always_inline bool arch_static_branch(struct static_key *key, bool branch)
{
asm_volatile_goto("1:"
".byte " __stringify(STATIC_KEY_INIT_NOP) "\n\t"
".pushsection __jump_table, \"aw\" \n\t"
_ASM_ALIGN "\n\t"
_ASM_PTR "1b, %l[l_yes], %c0 + %c1 \n\t"
".popsection \n\t"
: : "i" (key), "i" (branch) : : l_yes);
return false;
l_yes:
return true;
}
+ The code compiled successfully in kernel mode with followed command:
+ make V=1 clean
+ make V=1
+ The code failed to compile when I try to compile into user space mode with the followed command:
+ make -f Makefile.user clean
+ make -f Makefile.user
+ Note that the difference between gcc command line between the 2 modes are:
+ kernel: .... -fno-PIE ... -mcmodel=kernel ...
+ user space: .... -fPIC ... < removed > ...
+ Another interesting note is:
+ if I remove -fPIC from user space gcc command, then the code compile successfully. However -fPIC is the must for my project.
-----Original Message-----
From: Segher Boessenkool <segher@kernel.crashing.org>
Sent: Friday, September 10, 2021 11:36 AM
To: HON LUU <hon@dreambigsemi.com>
Cc: gcc-help@gcc.gnu.org
Subject: Re: gcc question
On Fri, Sep 10, 2021 at 05:58:07PM +0000, HON LUU wrote:
> Hi Segher,
>
> I wonder if you have any issues to reproduce the problem.
> Attached is the tar ball of stand alone module, which duplicate the issue.
> There is a README file, should be straightforward to duplicate the issue.
> You need to show the full code of the asm_volatile_goto, and the declarations of everything used in its operands, for us to get a handle on what is going on here. Bonus points if you manage to make a stand- alone compilable testcase that shows the problem.
If you write up a good email with all the necessary info, you will get an answer (and a good answer!) much quicker. I do not particularly feel like doing all the work here. Sorry.
Segher
next prev parent reply other threads:[~2021-09-11 21:08 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-08 15:06 HON LUU
2021-09-08 16:20 ` Segher Boessenkool
2021-09-08 16:26 ` HON LUU
2021-09-08 16:27 ` HON LUU
2021-09-08 17:05 ` HON LUU
2021-09-08 23:13 ` HON LUU
2021-09-10 17:58 ` HON LUU
2021-09-10 18:36 ` Segher Boessenkool
2021-09-11 21:08 ` HON LUU [this message]
2021-09-13 19:10 ` HON LUU
2021-09-13 19:22 ` Florian Weimer
2021-09-13 19:40 ` HON LUU
2021-09-13 19:42 ` HON LUU
2021-09-13 19:42 ` Florian Weimer
2021-09-13 19:50 ` HON LUU
2021-09-13 19:51 ` Florian Weimer
2021-09-13 19:52 ` HON LUU
-- strict thread matches above, loose matches on Subject: below --
2006-02-26 22:53 Brendan Darrer
2006-02-26 23:52 ` Ernest L. Williams Jr.
2006-02-27 15:29 ` Brian Budge
2002-06-12 9:29 j y
2002-06-12 11:16 ` Shawn Starr
2001-07-20 4:35 Steve Kieu
2000-08-13 19:34 tao tong
2000-04-10 7:46 GCC question Gibson, Terry
2000-04-10 8:12 ` Alexandre Oliva
2000-01-06 15:46 Black, Christopher T
2000-04-01 0:00 ` Black, Christopher T
[not found] <947048956.20674.ezmlm@gcc.gnu.org>
2000-01-04 21:22 ` John Ratcliff
2000-04-01 0:00 ` John Ratcliff
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DB6PR02MB3111AB3D949B72434D4E414EDDD79@DB6PR02MB3111.eurprd02.prod.outlook.com \
--to=hon@dreambigsemi.com \
--cc=gcc-help@gcc.gnu.org \
--cc=segher@kernel.crashing.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).