[U-Boot] [PATCH 1/4] eth-raw-os.c: Add cast to bind(2) call

With more recent gcc versions we otherwise get an error like: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_in *'
and the common solution here is to cast, rather than re-work the code.
Cc: Joe Hershberger joe.hershberger@ni.com Cc: Simon Glass sjg@chromium.org Signed-off-by: Tom Rini trini@konsulko.com --- arch/sandbox/cpu/eth-raw-os.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/sandbox/cpu/eth-raw-os.c b/arch/sandbox/cpu/eth-raw-os.c index b76a731..5df01ba 100644 --- a/arch/sandbox/cpu/eth-raw-os.c +++ b/arch/sandbox/cpu/eth-raw-os.c @@ -194,7 +194,8 @@ int sandbox_eth_raw_os_send(void *packet, int length, addr.sin_family = AF_INET; addr.sin_port = udph->source; addr.sin_addr.s_addr = iph->saddr; - retval = bind(priv->local_bind_sd, &addr, sizeof(addr)); + retval = bind(priv->local_bind_sd, (struct sockaddr *)&addr, + sizeof(addr)); if (retval < 0) printf("Failed to bind: %d %s\n", errno, strerror(errno));

GCC 5.x does not like sizeof(array_variable) and errors out. Change these calls to be instead sizeof(u8) (as that's what serdes_prtcl_map is) * SERDES_PRCTL_COUNT (the number of array elements).
Cc: York Sun yorksun@freescale.com Signed-off-by: Tom Rini trini@konsulko.com --- arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c | 2 +- arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c | 2 +- arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c index f7178d1..fe3444a 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c @@ -86,7 +86,7 @@ void serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift, u32 cfg; int lane;
- memset(serdes_prtcl_map, 0, sizeof(serdes_prtcl_map)); + memset(serdes_prtcl_map, 0, sizeof(u8) * SERDES_PRCTL_COUNT);
cfg = gur_in32(&gur->rcwsr[4]) & sd_prctl_mask; cfg >>= sd_prctl_shift; diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c index 2ab8da6..4f6b601 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c @@ -74,7 +74,7 @@ void serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift, u32 cfg; int lane;
- memset(serdes_prtcl_map, 0, sizeof(serdes_prtcl_map)); + memset(serdes_prtcl_map, 0, sizeof(u8) * SERDES_PRCTL_COUNT);
cfg = gur_in32(&gur->rcwsr[28]) & sd_prctl_mask; cfg >>= sd_prctl_shift; diff --git a/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c b/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c index acb1353..b439b5b 100644 --- a/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c +++ b/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c @@ -184,7 +184,7 @@ void serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift, u32 cfg; int lane;
- memset(serdes_prtcl_map, 0, sizeof(serdes_prtcl_map)); + memset(serdes_prtcl_map, 0, sizeof(u8) * SERDES_PRCTL_COUNT); #ifdef CONFIG_SYS_FSL_ERRATUM_A007186 struct ccsr_sfp_regs __iomem *sfp_regs = (struct ccsr_sfp_regs __iomem *)(CONFIG_SYS_SFP_ADDR);

On Sat, Nov 28, 2015 at 9:04 PM, Tom Rini trini@konsulko.com wrote:
GCC 5.x does not like sizeof(array_variable) and errors out. Change these calls to be instead sizeof(u8) (as that's what serdes_prtcl_map is) * SERDES_PRCTL_COUNT (the number of array elements).
Cc: York Sun yorksun@freescale.com Signed-off-by: Tom Rini trini@konsulko.com
arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c | 2 +- arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c | 2 +- arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c index f7178d1..fe3444a 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c @@ -86,7 +86,7 @@ void serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift, u32 cfg; int lane;
memset(serdes_prtcl_map, 0, sizeof(serdes_prtcl_map));
memset(serdes_prtcl_map, 0, sizeof(u8) * SERDES_PRCTL_COUNT); cfg = gur_in32(&gur->rcwsr[4]) & sd_prctl_mask; cfg >>= sd_prctl_shift;
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c index 2ab8da6..4f6b601 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c @@ -74,7 +74,7 @@ void serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift, u32 cfg; int lane;
memset(serdes_prtcl_map, 0, sizeof(serdes_prtcl_map));
memset(serdes_prtcl_map, 0, sizeof(u8) * SERDES_PRCTL_COUNT); cfg = gur_in32(&gur->rcwsr[28]) & sd_prctl_mask; cfg >>= sd_prctl_shift;
diff --git a/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c b/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c index acb1353..b439b5b 100644 --- a/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c +++ b/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c @@ -184,7 +184,7 @@ void serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift, u32 cfg; int lane;
memset(serdes_prtcl_map, 0, sizeof(serdes_prtcl_map));
memset(serdes_prtcl_map, 0, sizeof(u8) * SERDES_PRCTL_COUNT);
#ifdef CONFIG_SYS_FSL_ERRATUM_A007186 struct ccsr_sfp_regs __iomem *sfp_regs = (struct ccsr_sfp_regs __iomem *)(CONFIG_SYS_SFP_ADDR); --
Reviewed-by: Bin Meng bmeng.cn@gmail.com

On 11/28/2015 09:04 PM, Tom Rini wrote:
GCC 5.x does not like sizeof(array_variable) and errors out. Change these calls to be instead sizeof(u8) (as that's what serdes_prtcl_map is) * SERDES_PRCTL_COUNT (the number of array elements).
Cc: York Sun yorksun@freescale.com Signed-off-by: Tom Rini trini@konsulko.com
Applied to fsl-qoriq master. Awaiting upstream.
York

With gcc-5.x we get a warning about the ambiguity of BUG_ON(!a != b) and becomes BUG_ON((!a) != b). In this case reading of the function leads to us wanting to rewrite this as BUG_ON(a != b).
Cc: Prabhakar Kushwaha prabhakar@freescale.com Cc: Geoff Thorpe Geoff.Thorpe@freescale.com Cc: Haiying Wang Haiying.Wang@freescale.com Cc: Roy Pledge Roy.Pledge@freescale.com Cc: York Sun yorksun@freescale.com Signed-off-by: Tom Rini trini@konsulko.com --- drivers/net/fsl-mc/dpio/qbman_portal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/fsl-mc/dpio/qbman_portal.c b/drivers/net/fsl-mc/dpio/qbman_portal.c index 5fa8d95..449ff8a 100644 --- a/drivers/net/fsl-mc/dpio/qbman_portal.c +++ b/drivers/net/fsl-mc/dpio/qbman_portal.c @@ -117,7 +117,7 @@ void qbman_swp_mc_submit(struct qbman_swp *p, void *cmd, uint32_t cmd_verb) { uint32_t *v = cmd; #ifdef QBMAN_CHECKING - BUG_ON(!p->mc.check != swp_mc_can_submit); + BUG_ON(p->mc.check != swp_mc_can_submit); #endif lwsync(); /* TBD: "|=" is going to hurt performance. Need to move as many fields

On Sat, Nov 28, 2015 at 9:04 PM, Tom Rini trini@konsulko.com wrote:
With gcc-5.x we get a warning about the ambiguity of BUG_ON(!a != b) and becomes BUG_ON((!a) != b). In this case reading of the function leads to us wanting to rewrite this as BUG_ON(a != b).
Cc: Prabhakar Kushwaha prabhakar@freescale.com Cc: Geoff Thorpe Geoff.Thorpe@freescale.com Cc: Haiying Wang Haiying.Wang@freescale.com Cc: Roy Pledge Roy.Pledge@freescale.com Cc: York Sun yorksun@freescale.com Signed-off-by: Tom Rini trini@konsulko.com
drivers/net/fsl-mc/dpio/qbman_portal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/fsl-mc/dpio/qbman_portal.c b/drivers/net/fsl-mc/dpio/qbman_portal.c index 5fa8d95..449ff8a 100644 --- a/drivers/net/fsl-mc/dpio/qbman_portal.c +++ b/drivers/net/fsl-mc/dpio/qbman_portal.c @@ -117,7 +117,7 @@ void qbman_swp_mc_submit(struct qbman_swp *p, void *cmd, uint32_t cmd_verb) { uint32_t *v = cmd; #ifdef QBMAN_CHECKING
BUG_ON(!p->mc.check != swp_mc_can_submit);
BUG_ON(p->mc.check != swp_mc_can_submit);
#endif lwsync(); /* TBD: "|=" is going to hurt performance. Need to move as many fields --
Reviewed-by: Bin Meng bmeng.cn@gmail.com

On 11/28/2015 09:04 PM, Tom Rini wrote:
With gcc-5.x we get a warning about the ambiguity of BUG_ON(!a != b) and becomes BUG_ON((!a) != b). In this case reading of the function leads to us wanting to rewrite this as BUG_ON(a != b).
Cc: Prabhakar Kushwaha prabhakar@freescale.com Cc: Geoff Thorpe Geoff.Thorpe@freescale.com Cc: Haiying Wang Haiying.Wang@freescale.com Cc: Roy Pledge Roy.Pledge@freescale.com Cc: York Sun yorksun@freescale.com Signed-off-by: Tom Rini trini@konsulko.com
Applied to fsl-qoriq master. Awaiting upstream.
York

With gcc-5.x we get warning about inline non-static functions referring to static elements.
Signed-off-by: Tom Rini trini@konsulko.com --- arch/arm/cpu/arm920t/ep93xx/led.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/cpu/arm920t/ep93xx/led.c b/arch/arm/cpu/arm920t/ep93xx/led.c index 6144729..ecceb98 100644 --- a/arch/arm/cpu/arm920t/ep93xx/led.c +++ b/arch/arm/cpu/arm920t/ep93xx/led.c @@ -13,7 +13,7 @@ static uint8_t saved_state[2] = {STATUS_LED_OFF, STATUS_LED_OFF}; static uint32_t gpio_pin[2] = {1 << STATUS_LED_GREEN, 1 << STATUS_LED_RED};
-inline void switch_LED_on(uint8_t led) +static inline void switch_LED_on(uint8_t led) { register struct gpio_regs *gpio = (struct gpio_regs *)GPIO_BASE;
@@ -21,7 +21,7 @@ inline void switch_LED_on(uint8_t led) saved_state[led] = STATUS_LED_ON; }
-inline void switch_LED_off(uint8_t led) +static inline void switch_LED_off(uint8_t led) { register struct gpio_regs *gpio = (struct gpio_regs *)GPIO_BASE;

On Sat, Nov 28, 2015 at 9:04 PM, Tom Rini trini@konsulko.com wrote:
With gcc-5.x we get warning about inline non-static functions referring to static elements.
Signed-off-by: Tom Rini trini@konsulko.com
arch/arm/cpu/arm920t/ep93xx/led.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/cpu/arm920t/ep93xx/led.c b/arch/arm/cpu/arm920t/ep93xx/led.c index 6144729..ecceb98 100644 --- a/arch/arm/cpu/arm920t/ep93xx/led.c +++ b/arch/arm/cpu/arm920t/ep93xx/led.c @@ -13,7 +13,7 @@ static uint8_t saved_state[2] = {STATUS_LED_OFF, STATUS_LED_OFF}; static uint32_t gpio_pin[2] = {1 << STATUS_LED_GREEN, 1 << STATUS_LED_RED};
-inline void switch_LED_on(uint8_t led) +static inline void switch_LED_on(uint8_t led) { register struct gpio_regs *gpio = (struct gpio_regs *)GPIO_BASE;
@@ -21,7 +21,7 @@ inline void switch_LED_on(uint8_t led) saved_state[led] = STATUS_LED_ON; }
-inline void switch_LED_off(uint8_t led) +static inline void switch_LED_off(uint8_t led) { register struct gpio_regs *gpio = (struct gpio_regs *)GPIO_BASE;
--
Reviewed-by: Bin Meng bmeng.cn@gmail.com

On Sat, Nov 28, 2015 at 08:04:43AM -0500, Tom Rini wrote:
With gcc-5.x we get warning about inline non-static functions referring to static elements.
Signed-off-by: Tom Rini trini@konsulko.com Reviewed-by: Bin Meng bmeng.cn@gmail.com
Applied to u-boot/master, thanks!

On Sat, Nov 28, 2015 at 9:04 PM, Tom Rini trini@konsulko.com wrote:
With more recent gcc versions we otherwise get an error like: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_in *'
and the common solution here is to cast, rather than re-work the code.
Cc: Joe Hershberger joe.hershberger@ni.com Cc: Simon Glass sjg@chromium.org Signed-off-by: Tom Rini trini@konsulko.com
arch/sandbox/cpu/eth-raw-os.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/sandbox/cpu/eth-raw-os.c b/arch/sandbox/cpu/eth-raw-os.c index b76a731..5df01ba 100644 --- a/arch/sandbox/cpu/eth-raw-os.c +++ b/arch/sandbox/cpu/eth-raw-os.c @@ -194,7 +194,8 @@ int sandbox_eth_raw_os_send(void *packet, int length, addr.sin_family = AF_INET; addr.sin_port = udph->source; addr.sin_addr.s_addr = iph->saddr;
retval = bind(priv->local_bind_sd, &addr, sizeof(addr));
retval = bind(priv->local_bind_sd, (struct sockaddr *)&addr,
sizeof(addr)); if (retval < 0) printf("Failed to bind: %d %s\n", errno, strerror(errno));
--
Reviewed-by: Bin Meng bmeng.cn@gmail.com

On Sat, Nov 28, 2015 at 7:04 AM, Tom Rini trini@konsulko.com wrote:
With more recent gcc versions we otherwise get an error like: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_in *'
and the common solution here is to cast, rather than re-work the code.
Cc: Joe Hershberger joe.hershberger@ni.com Cc: Simon Glass sjg@chromium.org Signed-off-by: Tom Rini trini@konsulko.com
Acked-by: Joe Hershberger joe.hershberger@ni.com

Hi Tom,
On Tue, Dec 1, 2015 at 6:13 AM, Joe Hershberger joe.hershberger@gmail.com wrote:
On Sat, Nov 28, 2015 at 7:04 AM, Tom Rini trini@konsulko.com wrote:
With more recent gcc versions we otherwise get an error like: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_in *'
and the common solution here is to cast, rather than re-work the code.
Cc: Joe Hershberger joe.hershberger@ni.com Cc: Simon Glass sjg@chromium.org Signed-off-by: Tom Rini trini@konsulko.com
Acked-by: Joe Hershberger joe.hershberger@ni.com
I see this patch was assigned to me in patchwork. Patch 2&3 in the same series were applied by York to fsl-qoriq repo and patch 4 was applied by you to u-boot/master. So maybe you can apply this patch directly to u-boot/master?
Regards, Bin

On Fri, Jan 15, 2016 at 11:45:22AM +0800, Bin Meng wrote:
Hi Tom,
On Tue, Dec 1, 2015 at 6:13 AM, Joe Hershberger joe.hershberger@gmail.com wrote:
On Sat, Nov 28, 2015 at 7:04 AM, Tom Rini trini@konsulko.com wrote:
With more recent gcc versions we otherwise get an error like: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_in *'
and the common solution here is to cast, rather than re-work the code.
Cc: Joe Hershberger joe.hershberger@ni.com Cc: Simon Glass sjg@chromium.org Signed-off-by: Tom Rini trini@konsulko.com
Acked-by: Joe Hershberger joe.hershberger@ni.com
I see this patch was assigned to me in patchwork. Patch 2&3 in the same series were applied by York to fsl-qoriq repo and patch 4 was applied by you to u-boot/master. So maybe you can apply this patch directly to u-boot/master?
Sure. I think I intended to assign this to Simon instead, sorry. The golden rule about patchwork assignments is I get 'em wrong sometimes, just pass it around if so :)

On Sat, Nov 28, 2015 at 08:04:40AM -0500, Tom Rini wrote:
With more recent gcc versions we otherwise get an error like: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_in *'
and the common solution here is to cast, rather than re-work the code.
Cc: Joe Hershberger joe.hershberger@ni.com Cc: Simon Glass sjg@chromium.org Signed-off-by: Tom Rini trini@konsulko.com Reviewed-by: Bin Meng bmeng.cn@gmail.com Acked-by: Joe Hershberger joe.hershberger@ni.com
Applied to u-boot/master, thanks!
participants (4)
-
Bin Meng
-
Joe Hershberger
-
Tom Rini
-
York Sun