The following code
void f(void)
{
register int i;
}
gives a warning with GCC and -std=c++17
test.cc: In function ‘void f()’:
test.cc:3:15: warning: ISO C++1z does not allow ‘register’ storage class
specifier [-Wregister]
register int i;
^
and clang with -std=c++14
test.cc:3:3: warning: 'register' storage class specifier is deprecated
and incompatible with C++1z [-Wdeprecated-register]
register int i;
^~~~~~~~~
1 warning generated.
Remove the use of the register keyword at least in the public header
files for C++ compatibility.
Close#3397.
- Do not error if a RAP section is not found.
- Free a symbol table via the RTL allocator interface.
- Add the symbols to the global symbol table.
Update #2769
This option silences warning with automake-1.16.1 allowing us to
upgrade to that version.
This change has been tested with automake-1.12.6 and automake-1.16.1.
It seems version 1.16.1 configures slower than 1.12.6 for the same
source and BSP. The newer versions is 6 second slower.
Close#3387.
rtems_rfs_dir_read searches the directory inode's entries list starting
at the specified offset until an empty entry (last entry) is encountered. It
fills in a struct dirent with the name of the entry, length of the name, ino of
the entry, and the absolute offset of the entry in the parent directory's
entries
list.
Unfortunately, the stock implementation of rtems_rfs_dir_read returns a
somewhat arbitrary offset (as dirent::d_off), while
rtems_rfs_dir_lookup_ino always returns the correct offset.
This change fixes that logic so the returned offset is accurate.
Tested by comparing the offset returned in dirent with the result of
rtems_rfs_dir_lookup_ino.
The bitmap allocation accounting logic in rtems-rfs-bitmaps.c is flawed
around control->free. Specifically:
In rtems_rfs_bitmap_map_set():
control->free is only decremented when its corresponding search bit is
toggled. This is wrong and will miss on average 31/32 set updates.
In rtems_rfs_bitmap_map_clear():
control->free is incremented unconditionally.
The correct behavior is:
When updating the map, check if the bit is already set/clear. Only update
control->free when the bit is toggled.
This change enforced the correct behavior.
Tested by inspecting the internal data structure.
In rtems_rfs_bitmap_map_clear_all(), control->free is set to 'elements',
which is the number of elements in the bitmap. This is incorrect, as
control->free should contain the number of free bits, not elements.
This change fixes the logic and resets control->free to a correct value.
This change fixes https://devel.rtems.org/ticket/3089.
Briefly, rtems_rfs_group.c contains conflicting conversions between
block numbers and group number and bit offset pairs. This caused the
actual bit stored on the bitmask to be one bit displaced from its
intended location.
For more details, please see the associated ticket.
Tested by inspecting the written bitmasks with and without this change.