All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Daney <ddaney@caviumnetworks.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
	Jason Baron <jbaron@redhat.com>,
	peterz@infradead.org, hpa@zytor.com, mingo@elte.hu,
	tglx@linutronix.de, andi@firstfloor.org, roland@redhat.com,
	rth@redhat.com, masami.hiramatsu.pt@hitachi.com,
	fweisbec@gmail.com, avi@redhat.com, davem@davemloft.net,
	sam@ravnborg.org, michael@ellerman.id.au,
	linux-kernel@vger.kernel.org, Ralf Baechle <ralf@linux-mips.org>
Subject: Re: [PATCH 0/2] jump label: update for .39
Date: Thu, 10 Mar 2011 14:11:08 -0800	[thread overview]
Message-ID: <4D794C7C.5010008@caviumnetworks.com> (raw)
In-Reply-To: <1299793339.15854.430.camel@gandalf.stny.rr.com>

On 03/10/2011 01:42 PM, Steven Rostedt wrote:
> On Thu, 2011-03-10 at 16:22 -0500, Mathieu Desnoyers wrote:
>
>>> Anyway, I think the best thing for now is to have Jason add
>>> the .align(sizeof(long)) in the inline assembly for all locations and be
>>> done with it.
>>
>> You seem to be contradicting yourself here. I'm concerned about having
>> "structures" of a size not power of two. Can we simply either
>
> But we don't have structures. We have data that has been allocated in
> assembly. Come to think of it, it may be best to keep these as
> ".align 4".
>
>
>>
>> - Add a padding element at the end
>> or
>> - use .align 4*sizeof(long) at the beginning
>>
>> to make sure the linker won't put any holes when it puts objects
>> together ?
>>
>
> The linker should be dumb and not trying to "optimize", because it has
> no idea what the content is. If anything, it should try to compact
> things as best as possible, with the exception of keeping things
> naturally word aligned. If you added even ".align(4)" on a 64bit system,
> the linker should be trying to keep everything packed.
>
> If I get time, I could look at the linker code to see exactly what it
> does, but adding holes into sections that are naturally word align seems
> more like a bug in the linker than a problem that we need to deal with.
>
> The only issue I could fathom, is if gcc added its own padding in a
> section. That is, when it created the __jump_table section with one
> element, it added another 4/8 bytes to make the section size a power of
> two. Maybe that is a true issue, maybe not. It would seems stupid to do
> so IMHO, because when you get to bigger numbers, the aligning a power of
> 2 can get much bigger. But perhaps it does it for small power of 2s?
>

GCC on x86_64 likes to align its data with .align 16:
-------------------------------
$ cat jl.c

struct foo {
   long a;
   long b;
   long c;
};

struct foo bar = {1,2,3};

$ gcc -O3 -S jl.c
$ cat jl.s
	.file	"jl.c"
.globl bar
	.data
	.align 16
	.type	bar, @object
	.size	bar, 24
bar:
	.quad	1
	.quad	2
	.quad	3
	.ident	"GCC: (GNU) 4.4.4 20100630 (Red Hat 4.4.4-10)"
	.section	.note.GNU-stack,"",@progbits
----------------------------------

But that shouldn't matter because we only emit data to the __jump_table 
section from asm().

GCC is getting a reference to that table (array of structures really) 
from a global variable, I don't see how it can violate the ABI in this case.


David Daney

  reply	other threads:[~2011-03-10 22:11 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-09 20:47 [PATCH 0/2] jump label: update for .39 Jason Baron
2011-03-09 20:47 ` [PATCH 1/2] jump label: introduce static_branch() interface Jason Baron
2011-03-10 20:54   ` Steven Rostedt
2011-03-10 20:56   ` Steven Rostedt
2011-03-11  2:05     ` Ralf Baechle
2011-03-11  2:15       ` Steven Rostedt
2011-03-10 21:01   ` Steven Rostedt
2011-03-10 21:18     ` Jason Baron
2011-03-11  2:02       ` Ralf Baechle
2011-03-09 20:47 ` [PATCH 2/2] dynamic debug: add jump label support Jason Baron
2011-03-10  3:36 ` [PATCH 0/2] jump label: update for .39 Steven Rostedt
2011-03-10 14:11   ` Mathieu Desnoyers
2011-03-10 14:46   ` Jason Baron
     [not found]   ` <BLU0-SMTP690BB959832A97E002293396C80@phx.gbl>
2011-03-10 15:38     ` Steven Rostedt
2011-03-10 17:27       ` David Daney
2011-03-10 18:04         ` Steven Rostedt
2011-03-10 18:20           ` Jason Baron
2011-03-10 18:35             ` Steven Rostedt
2011-03-10 18:47               ` David Daney
2011-03-10 18:53                 ` Steven Rostedt
2011-03-10 18:57                   ` David Daney
2011-03-10 19:25                     ` Steven Rostedt
2011-03-10 19:45                       ` Steven Rostedt
2011-03-10 19:53                         ` Jason Baron
2011-03-10 20:01                           ` Steven Rostedt
2011-03-10 21:22                         ` Mathieu Desnoyers
     [not found]                         ` <BLU0-SMTP311155BEBE5F141636A6E596C80@phx.gbl>
2011-03-10 21:42                           ` Steven Rostedt
2011-03-10 22:11                             ` David Daney [this message]
2011-03-10 22:24                               ` Steven Rostedt
2011-03-10 22:48                             ` Mathieu Desnoyers
     [not found]                             ` <BLU0-SMTP101D168109508CC1B82F0E496C80@phx.gbl>
2011-03-10 23:16                               ` Steven Rostedt
2011-03-10 23:25                                 ` David Daney
2011-03-10 23:32                                   ` Thomas Gleixner
2011-03-10 23:43                                     ` Steven Rostedt
2011-03-10 23:51                                       ` Thomas Gleixner
     [not found]                         ` <BLU0-SMTP39EE03AE86CF0F0E5C570596C80@phx.gbl>
2011-03-11  0:38                           ` Ralf Baechle
2011-03-11  1:19                             ` Michael Ellerman
2011-03-11  2:39                             ` Mathieu Desnoyers
2011-03-10 21:39                   ` Mathieu Desnoyers
2011-03-10 21:11         ` Mathieu Desnoyers
2011-03-10 21:14       ` Mathieu Desnoyers
     [not found]       ` <BLU0-SMTP2489AC44910467F37596A496C80@phx.gbl>
2011-03-10 21:34         ` Steven Rostedt
2011-03-10 22:02           ` Mathieu Desnoyers
2011-03-10 16:41 ` Jan Glauber

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=4D794C7C.5010008@caviumnetworks.com \
    --to=ddaney@caviumnetworks.com \
    --cc=andi@firstfloor.org \
    --cc=avi@redhat.com \
    --cc=davem@davemloft.net \
    --cc=fweisbec@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jbaron@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mathieu.desnoyers@polymtl.ca \
    --cc=michael@ellerman.id.au \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=ralf@linux-mips.org \
    --cc=roland@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=rth@redhat.com \
    --cc=sam@ravnborg.org \
    --cc=tglx@linutronix.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.