libsharedobjs: Add libsharedobjs.h.
libsharedobjs: Add libsharedobjs.h.

This commit introduces the macros needed for the shared objects library.
To enable the creation of the shared objects library for a particular
board, simply define it in board.h.

   #define CONFIG_SHAREDLIB

In order to actually add objects to the shared library, one must utilize
the SHAREDLIB() macro around the definition of the object.  All of the
objects in the shared library will be placed into a separate binary
which the RO and RW images link against.  The SHAREDLIB() macro simply
adds this attribute and prevents the RO and RW images from compiling
them in.  This library will reside at a fixed location in memory
(currently following the RO image) and the size of the library can be
defined on a board by board basis.  For example, in board.h:

   #undef CONFIG_SHAREDLIB_SIZE
   #define CONFIG_SHAREDLIB_SIZE 0x800

For example,

   # In foo/build.mk
   foo-$(CONFIG_BAR)+=bar_sharedlib.o

   # In foo/bar_sharedlib.c
   #include "libsharedobjs.h"
   SHAREDLIB(const uint8_t shared_var = 0x43);

   # In include/bar_sharedlib.h
   extern const uint8_t shared_var;

BUG=none
BRANCH=none
TEST=make -j buildall tests
TEST=Enabled config option and saw the sharedlib being created.
TEST=Enabled config option on unsupported board and saw build fail.
CQ-DEPEND=CL:274079

Change-Id: I2abeb1be248ab161fa81c897d2f5793f5a599456
Signed-off-by: Aseda Aboagye <12c9b286316a940fd31c24070da5ab64cdd4d0e7@google.com>
Reviewed-on: https://chromium-review.googlesource.com/275344
Reviewed-by: Aseda Aboagye <12c9b286316a940fd31c24070da5ab64cdd4d0e7@chromium.org>
Tested-by: Aseda Aboagye <12c9b286316a940fd31c24070da5ab64cdd4d0e7@chromium.org>
Commit-Queue: Aseda Aboagye <12c9b286316a940fd31c24070da5ab64cdd4d0e7@chromium.org>

fourier49/BIZ_EC,fourier49/BIZ_EC,fourier49/BIZ_EC,fourier49/BIZ_EC