diff --git a/Bootloaders/CDC/BootloaderCDC.h b/Bootloaders/CDC/BootloaderCDC.h
index dce84a5f84d4b9868e1eacfb294043b5f33626a1..7669b836c1e3aad1e38c04d49d8417f8a8569491 100644
--- a/Bootloaders/CDC/BootloaderCDC.h
+++ b/Bootloaders/CDC/BootloaderCDC.h
@@ -48,6 +48,11 @@
 
 		#include <LUFA/Drivers/USB/USB.h>                // USB Functionality
 
+	/* Preprocessor Checks: */
+		#if !defined(SIGNATURE_0) || !defined(SIGNATURE_1) || !defined(SIGNATURE_2)
+			#error Device signature byte constants are not defined due to outdated avr-libc version. See demo documentation.
+		#endif
+
 	/* Macros: */
 		/** CDC Class Specific request to get the line encoding on a CDC-ACM virtual serial port, including the
 		 *  baud rate, parity, stop bits and data bits.
diff --git a/Bootloaders/CDC/BootloaderCDC.txt b/Bootloaders/CDC/BootloaderCDC.txt
index 1f8970d57e5a6fe4c8a1a15cd283553f77ed0be9..1122e73ae841f3a3c146109225947dbaaaeb3a6c 100644
--- a/Bootloaders/CDC/BootloaderCDC.txt
+++ b/Bootloaders/CDC/BootloaderCDC.txt
@@ -50,9 +50,16 @@
  *
  *  <table>
  *   <tr>
- *    <td>
- *     None
- *    </td>
+ *    <td><b>Define Name:</b></td>
+ *    <td><b>Location:</b></td>
+ *    <td><b>Description:</b></td>
+ *   </tr>
+ *   <tr>
+ *    <td>SIGNATURE_0, SIGNATURE_1, SIGNATURE_2</td>
+ *    <td>Makefile CDEFS</td>
+ *    <td>AVR part signature bytes. These are normally defined as part of the AVR device header files in recent avr-libc
+ *        distributions. If your avr-libc library is out of date and does not define these values, you can define them
+ *        manually in the makefile CDEFS.</td>
  *   </tr>
  *  </table>
  */
\ No newline at end of file
diff --git a/Bootloaders/DFU/BootloaderDFU.h b/Bootloaders/DFU/BootloaderDFU.h
index d0a82544389e0afa4393d359fbbe225ce751bf95..e996f2b79c366208d1fd30473375a1963cb541a0 100644
--- a/Bootloaders/DFU/BootloaderDFU.h
+++ b/Bootloaders/DFU/BootloaderDFU.h
@@ -48,7 +48,12 @@
 		#include "Descriptors.h"
 		
 		#include <LUFA/Drivers/USB/USB.h>                // USB Functionality
-		
+	
+	/* Preprocessor Checks: */
+		#if !defined(SIGNATURE_0) || !defined(SIGNATURE_1) || !defined(SIGNATURE_2)
+			#error Device signature byte constants are not defined due to outdated avr-libc version. See demo documentation.
+		#endif
+	
 	/* Macros: */
 		/** Configuration define. Define this token to true to case the bootloader to reject all memory commands
 		 *  until a memory erase has been performed. When used in conjunction with the lockbits of the AVR, this
diff --git a/Bootloaders/DFU/BootloaderDFU.txt b/Bootloaders/DFU/BootloaderDFU.txt
index 7107cc1232d11fc4558ab33a47aeaa467fe87008..44158ed0745622e7275c6ac14da6be6991d65eac 100644
--- a/Bootloaders/DFU/BootloaderDFU.txt
+++ b/Bootloaders/DFU/BootloaderDFU.txt
@@ -73,5 +73,12 @@
  *        erase has been perfomed. This can be used in conjunction with the AVR's lockbits to prevent the AVRs firmware from
  *        being dumped by unauthorized persons.</td>
  *   </tr>
+ *   <tr>
+ *    <td>SIGNATURE_0, SIGNATURE_1, SIGNATURE_2</td>
+ *    <td>Makefile CDEFS</td>
+ *    <td>AVR part signature bytes. These are normally defined as part of the AVR device header files in recent avr-libc
+ *        distributions. If your avr-libc library is out of date and does not define these values, you can define them
+ *        manually in the makefile CDEFS.</td>
+ *   </tr>
  *  </table>
  */
\ No newline at end of file
diff --git a/Demos/Device/MassStorage/MassStorage.c b/Demos/Device/MassStorage/MassStorage.c
index 40326483581eb00ad5746c341d4cf068b71016a7..56bc19a94375ba23bc37ac6f3719b8e74d31db05 100644
--- a/Demos/Device/MassStorage/MassStorage.c
+++ b/Demos/Device/MassStorage/MassStorage.c
@@ -386,7 +386,7 @@ STREAM_CALLBACK(AbortOnMassStoreReset)
 /** ISR for the general Pipe/Endpoint interrupt vector. This ISR fires when a control request has been issued to the control endpoint,
  *  so that the request can be processed. As several elements of the Mass Storage implementation require asynchronous control requests
  *  (such as endpoint stall clearing and Mass Storage Reset requests during data transfers) this is done via interrupts rather than
- *  polling.
+ *  polling so that they can be processed regardless of the rest of the application's state.
  */
 ISR(ENDPOINT_PIPE_vect, ISR_BLOCK)
 {
diff --git a/Demos/Device/RNDISEthernet/RNDIS.h b/Demos/Device/RNDISEthernet/RNDIS.h
index 0d240ac4eba1eb0d130124cdc2e94e1cb52b9805..88c9a9eb950e5b620c66eb33a112f5978343fc28 100644
--- a/Demos/Device/RNDISEthernet/RNDIS.h
+++ b/Demos/Device/RNDISEthernet/RNDIS.h
@@ -55,10 +55,10 @@
 		#define REMOTE_NDIS_VERSION_MINOR             0x00
 	
 		/** RNDIS request to issue a host-to-device NDIS command */
-		#define SEND_ENCAPSULATED_COMMAND             0x00
+		#define REQ_SendEncapsulatedCommand           0x00
 
 		/** RNDIS request to issue a device-to-host NDIS response */
-		#define GET_ENCAPSULATED_RESPONSE             0x01
+		#define REQ_GetEncapsulatedResponse           0x01
 		
 	/* Enums: */
 		/** Enum for the possible NDIS adapter states. */
diff --git a/Demos/Device/RNDISEthernet/RNDISEthernet.c b/Demos/Device/RNDISEthernet/RNDISEthernet.c
index 98863a1130348e2c92caf52ce3de18976d0f0f87..78c77c8eb7ee2d68ff8ce35d8bb4a02b0fd46342 100644
--- a/Demos/Device/RNDISEthernet/RNDISEthernet.c
+++ b/Demos/Device/RNDISEthernet/RNDISEthernet.c
@@ -158,7 +158,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
 	/* Process RNDIS class commands */
 	switch (bRequest)
 	{
-		case SEND_ENCAPSULATED_COMMAND:
+		case REQ_SendEncapsulatedCommand:
 			if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				/* Clear the SETUP packet, ready for data transfer */
@@ -175,7 +175,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
 			}
 			
 			break;
-		case GET_ENCAPSULATED_RESPONSE:
+		case REQ_GetEncapsulatedResponse:
 			if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				/* Check if a response to the last message is ready */
diff --git a/LUFA/ChangeLog.txt b/LUFA/ChangeLog.txt
index b4ecc89515608aa361a0cfe40e68e83f6024c930..0b15df0b270d558543f2ca704f1c653aa56850c7 100644
--- a/LUFA/ChangeLog.txt
+++ b/LUFA/ChangeLog.txt
@@ -17,11 +17,13 @@
   *  - Added new PIMA_DATA_SIZE() define to the Still Image Host demo
   *  - Add call to MassStore_WaitForDataReceived() in MassStore_GetReturnedStatus() to ensure that the CSW has been received in the
   *    extended MSC timeout period before continuing, to prevent long processing delays from causing the MassStore_GetReturnedStatus()
-  *    to early-abort
+  *    to early-abort (thanks to Dmitry Maksimov)
   *  - Move StdRequestType.h, StreamCallbacks.h, USBMode.h from the LowLevel USB driver directory to the HighLevel USB driver directory,
   *    where they are more suited
   *  - Removed all binary constants and replaced with decimal or hexadecimal constants so that unpatched GCC compilers can still build the
   *    code without having to be itself patched and recompiled first
+  *  - Added preprocessor checks and documentation to the bootloaders giving information about missing SIGNATURE_x defines due to
+  *    outdated avr-libc versions.
   *
   *  \section Sec_ChangeLog090401 Version 090401
   *