Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Backport v1.14-branch] linker: move scripts generated code at the beginning of .text #17905

Conversation

wentongwu
Copy link
Contributor

  1. When code relocation enabled, there will be serval regions holding
    text. And then there will be function call between these .text
    regions, when distance between caller and callee is too far, linker
    will automatically generate and insert veneer functions. And these
    veneer functions will be located right after the last instruction
    in the .text region by the linker. So these code will be put in the
    memory reserved for priv_stacks text and kobject text if they don't
    consume all the reserved memory. Or the veneer functions will be put
    before the reserved memory if there isn't code in the reserved
    memory. And then in the user mode building process, there will be
    different memory layout and it will cause usr mode not working.
    And moving the memory reserved for priv_stacks text and kobject text
    at the beginning of .text will avoid above problem. The detailed
    analysis for this issue can be found on Github issue code relocation generating different memory layout cause user mode not working #17038.

  2. make mpu align inside sections instead of outside to avoid
    overlap for code relocation feature.

Fixes: #17038.

bwitherspoon and others added 30 commits April 17, 2019 08:35
If promiscuous mode support is disabled in Kconfig and promiscuous.h is
included the build will fail. The returned errno should be ENOTSUP.

Signed-off-by: Brett Witherspoon <[email protected]>
Do not start CI on random branches created in the tree.

Signed-off-by: Anas Nashif <[email protected]>
The default values for the timeouts, as well as non-defaults in most
Mesh samples, use a higher value for the RPL than then generic mesh
storage timeout. This hasn't had any effect in practice since the code
only uses the RPL timeout if it is *smaller* than the generic one.

The original intention of the code was to use the RPL timeout,
regardless of what the generic one is, whenever the RPL is the only
thing that needs updating. Add some helper macros to track the various
groups of pending flags, and perform the appropriate checks to apply
the RPL timeout whenever it's smaller than the generic timeout, or if
there are no other items to store besides the RPL.

Fixes zephyrproject-rtos#15904

Signed-off-by: Johan Hedberg <[email protected]>
If the local node keeps getting bombarded with messages, it's possible
that the storage timer gets rescheduled over and over again and never
expires. Add the necessary code to only reschedule the timer if the
new deadline is earlier than an existing one.

Signed-off-by: Johan Hedberg <[email protected]>
When starting direct advertising use correct identity during
connection lookup.

Signed-off-by: Pawel Dunaj <[email protected]>
Unref conn when direct adv start exits with an error.

Signed-off-by: Pawel Dunaj <[email protected]>
IPv4 link local uses ARP to detect conflicting addresses. Properly
set the ethernet packet type to NET_ETH_PTYPE_ARP when probing
for address duplicates.

Signed-off-by: Patrik Flykt <[email protected]>
In addition to checking that the ARP entry does not exist as the
implementation is done currently, also check if the ARP packet
is due to IPv4 link local address configuration. In both cases
use the provided IPv4 address instead of the one set for the
interface.

Signed-off-by: Patrik Flykt <[email protected]>
The size of the ROM region is now rounded up to the
nearest power of two; we no longer assume that RAM
is in a different part of memory.

Fixes: zephyrproject-rtos#15558

Signed-off-by: Andrew Boie <[email protected]>
Allow usage of LOG_MODULE_REGISTER and LOG_MODULE_DECLARE in
C++.

Signed-off-by: Krzysztof Chruscinski <[email protected]>
Fix warning when header file is included by C++ source file.

Signed-off-by: Krzysztof Chruscinski <[email protected]>
There was a stray close group comment @} that was causing a large chunk
of the watchdoc API documentation to be missing.

Fixes: zephyrproject-rtos#15678

Signed-off-by: David B. Kinder <[email protected]>
Excerpt from the manual:

  If ptr is NULL, then the call is equivalent to malloc(size) [...]

Without this commit, such calls end with a BUS FAULT.

Signed-off-by: Tomasz Gorochowik <[email protected]>
Enable the clock for GPIO ports on the RV32M1 SoC before attempting to
access the port controller registers.

Fixes: zephyrproject-rtos#15339

Signed-off-by: Henrik Brix Andersen <[email protected]>
UDP packet from net is not 4-byte aligned.
So we have to add __packed for zperf_udp_datagram.

Fixes zephyrproject-rtos#15605.

Signed-off-by: Bub Wei <[email protected]>
We need to re-initialize the trickle->timer delayed work to use
trickle_timeout() if there are multiple triggerings.

Fixes zephyrproject-rtos#15606

Signed-off-by: ling wei <[email protected]>
Without this label cmake fails when attempting to enable this uart.

Signed-off-by: Sören Tempel <[email protected]>
Without this change compilation of the SLIP module would fail if LLDP
wasn't enabled. There is also no need to include net/lldp.h explicitly
as net/ethernet.h will include it conditionally if CONFIG_NET_LLDP is
defined.

Signed-off-by: Sören Tempel <[email protected]>
For example it should be possible to compile and use the SLIP module
with NET_L2_DUMMY. This required the following changes:

* Fix a typo in the initializer for struct dummy_api
* Only define eth_capabilities if CONFIG_NET_L2_ETHERNET is defined to
  silence a -Wunused-function compiler warning
* Unconditionally include net/dummy.h

Signed-off-by: Sören Tempel <[email protected]>
Total RAM is 192, including 64K CCM.

Signed-off-by: Kwon Tae-young <[email protected]>
Make sure the parameters for the API functions are valid, return error
otherwise.

This is expected by the tests/subsys/usb/device test case.

Signed-off-by: Benjamin Valentin <[email protected]>
This implements three API functions that are required for
tests/subsys/usb/device to build:

 - usb_dc_ep_disable()
 - usb_dc_ep_halt()
 - usb_dc_ep_flush()

While halt and disable are trivial, flush is just a stub for now.

Signed-off-by: Benjamin Valentin <[email protected]>
Fixes the STM32 counter driver when LSE is the clock source
and SoC is not F4.

Signed-off-by: Georgij Cernysiov <[email protected]>
DRV_VALIDATION should depend on any changes to the tool that generates
it, gen_kobject_list.py.

Signed-off-by: Bradley Bolen <[email protected]>
The radio API expects the setting of the TX-power in dBm. The actual
TX-power is however set by a 6bit register, which mapping between
register value and power in dBm is a lookup-table in the datasheet.

This mapping for the kw41z was off, which not only lead to incorrect
output power, but also to a maximal output power of only -1.9 dBm
instead of the possible +3.5 dBm.

Signed-off-by: Tobias Aschenbrenner <[email protected]>
Signed-off-by: Franco Saworski <[email protected]>
SAMD20 does not have the DMA or USB peripherals and as a result
the IRQs for all subsequent lines are shifted down from SAMD21.
This splits the interrupt assignment for the SERCOMs into the
SoC specific DTS file and moves the USB definition to SAMD21 only.

Signed-off-by: Derek Hageman <[email protected]>
The SYSCFG_CFGR1_PA11_PA12_RMP define is present even on packages where
the remap isn't strictly required. This commit makes the remap optional
based on a DT property.

Also fixes syntax error caused by a missing );.

Signed-off-by: Josef Gajdusek <[email protected]>
If the user attempts to send data before the USB connection is
established (see the HID sample for an example of such code), the
DataInCallback never gets called which leaves the write semaphore in a
taken state forever.

Signed-off-by: Josef Gajdusek <[email protected]>
This error causes various instabilities during capture.

Signed-off-by: Loic Poulain <[email protected]>
After the rework in zephyrproject-rtos#12403, specifying a shield which has overlay
out of the tree causes unnecessary inclusions of overlays.
For every board root, overlays that have same index as
expected overlay are being included.
Fix this by removing already included overlays from SHIELD list.

Signed-off-by: Marcin Szymczyk <[email protected]>
When code relocation enabled, there will be serval regions holding
text. And then there will be function call between these .text
regions, when distance between caller and callee is too far, linker
will automatically generate and insert veneer functions. And these
veneer functions will be located right after the last instruction
in the .text region by the linker. So these code will be put in the
memory reserved for priv_stacks text and kobject text if they don't
consume all the reserved memory. Or the veneer functions will be put
before the reserved memory if there isn't code in the reserved
memory. And then in the user mode building process, there will be
different memory layout and it will cause usr mode not working.
And moving the memory reserved for priv_stacks text and kobject text
at the beginning of .text will avoid above problem. The detailed
analysis for this issue can be found on Github issue zephyrproject-rtos#17038.

Fixes: zephyrproject-rtos#17038.

Signed-off-by: Wentong Wu <[email protected]>
make mpu align inside sections instead of outside to avoid
overlap for code relocation feature.

Signed-off-by: Wentong Wu <[email protected]>
@wentongwu wentongwu deleted the backport-17185-to-v1.14-branch branch September 20, 2019 15:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

code relocation generating different memory layout cause user mode not working